package com.wsoft.form.constant;

import java.util.Arrays;
import java.util.List;

/**
 * @Author z001
 * @Date 2024/10/29 18:03
 */
public class MysqlReservedWordConstant {

    /**
     * 空格
     */
    public static final String SPACE = " ";

    /**
     * 长度
     */
    public static final int COLUMN_SIZE = 64;

    /**
     * mysql 保留字
     */
    public static final List<String> MYSQL_RESERVED_WORD_PREFIX = Arrays.asList( "SELECT", "UPDATE", "DELETE", "INSERT", "FROM", "WHERE", "AND", "OR", "NOT",
            "JOIN", "LEFT", "RIGHT", "INNER", "OUTER", "ON", "AS", "GROUP", "BY", "HAVING",
            "ORDER", "ASC", "DESC", "LIMIT", "OFFSET", "DISTINCT", "ALL", "UNION", "INTERSECT",
            "EXCEPT", "IN", "EXISTS", "LIKE", "BETWEEN", "CASE", "WHEN", "THEN", "ELSE", "END",
            "CREATE", "ALTER", "DROP", "TABLE", "VIEW", "INDEX", "PRIMARY", "KEY", "FOREIGN",
            "REFERENCES", "CONSTRAINT", "UNIQUE", "CHECK", "DEFAULT", "NULL", "NOT", "IS",
            "TRUE", "FALSE", "BOOLEAN", "INT", "INTEGER", "SMALLINT", "BIGINT", "FLOAT", "DOUBLE",
            "DECIMAL", "CHAR", "VARCHAR", "TEXT", "DATE", "TIME", "TIMESTAMP", "YEAR", "ENUM",
            "SET", "BINARY", "VARBINARY", "BLOB", "JSON", "XML", "GRANT", "REVOKE", "USER",
            "ROLE", "DATABASE", "SCHEMA", "IF", "EXISTS", "AUTO_INCREMENT", "COMMENT", "COLLATE",
            "ENGINE", "CHARSET", "CURRENT_TIMESTAMP", "FOREIGN", "KEY", "REFERENCES", "CONSTRAINT",
            "UNIQUE", "CHECK", "DEFAULT", "NULL", "NOT", "IS", "TRUE", "FALSE", "BOOLEAN", "INT",
            "INTEGER", "SMALLINT", "BIGINT", "FLOAT", "DOUBLE", "DECIMAL", "CHAR", "VARCHAR", "TEXT",
            "DATE", "TIME", "TIMESTAMP", "YEAR", "ENUM", "SET", "BINARY", "VARBINARY", "BLOB", "JSON",
            "XML", "GRANT", "REVOKE", "USER", "ROLE", "DATABASE", "SCHEMA", "IF", "EXISTS", "AUTO_INCREMENT",
            "COMMENT", "COLLATE", "ENGINE", "CHARSET", "CURRENT_TIMESTAMP");


    /**
     * 数据权限过滤 黑名单
     */
    public static final List<String> DATA_PERM_LIST = Arrays.asList(
            "ABSENT", "BASE64", "BETWEEN", "CONSTRAINT", "CURRENT", "FETCH", "FINAL", "FOR", "EXISTS", "CROSS",
            "DBA_RECYCLEBIN", "DISTINCT", "CONNECT_BY_ROOT", "AND", "FORCE", "FOREIGN", "FROM", "FULL", "GROUP_CONCAT",
            "HAVING", "HIGH_PRIORITY", "ILIKE", "INCLUDE_NULL_VALUES", "STRAIGHT_JOIN", "INTERSECT", "INTO", "IS",
            "JOIN", "JSON_OBJECT", "JSON_OBJECTAGG", "JSON_ARRAY", "JSON_ARRAYAGG", "LATERAL", "LIKE", "LOW_PRIORITY",
            "MINUS", "NATURAL", "NOCYCLE", "NOT", "NULL", "ONLY", "OR", "=>", "OUTER", "OUTPUT", "PIVOT", "RECURSIVE",
            "REGEXP", "RETURNING", "SAFE_CAST", "SAMPLE", "SEMI", "TABLESAMPLE", "TRIM", "TRAILING", "TRY_CAST",
            "UNION", "UNIQUE", "UNPIVOT", "USE", "SQL_CALC_FOUND_ROWS", "SQL_NO_CACHE", "SQL_CACHE", "USING",
            "VARYING", "WHEN", "WHERE", "WINDOW", "WITH_TIES", "WITHOUT_ARRAY_WRAPPER", "XOR", "XMLSERIALIZE"
    );
}
